/***********************************************************************
 * Module:  Event.java
 * Author:  Jean-Franéois FERNANDES, Alex Rameaux WAFO DEFO
 * Purpose: Defines the Class Event
 ***********************************************************************/
package event;
import java.io.Serializable;
import java.util.Calendar;
import java.util.Date;

public class Event implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	/** Les données de l'événement. */
	 private String data;
	 
	 /** La source de l'événement. */
	 private String source;
	 
	 /** La date de naissance de l'événement. */
	 private Date birthDate;
	 
	 /** La durée de vie de l'événement. */
	 private int duration;
	 
	 /** l'auteur du message */
	 private String auteur;

	 /**
	 * Le constructeur de la classe.
	 * 
	 * @param data Les données de l'événement
	 * @param source La source de l'événement
	 * @param duration La durée de vie de l'événement
	 */
	 public Event(String data, String source, int duration){
		 this.birthDate = new Date();
		 this.data = data;
		 this.duration = duration;
		 this.source =  source;
	  
	 }
	 
	 /**
	  * Vérifie que la date actuelle est aprés la date d'expiration de l'événement.
	  * @return vrai si la date d'expiration est dépassé, faux sinon
	  */
	 public boolean isOutOfTime() {		
		 Calendar calendar = Calendar.getInstance();
		 calendar.setTime(birthDate);
		 calendar.add(Calendar.SECOND, duration);
		 Date end = calendar.getTime();
		 Date now = new Date();
		 return now.after(end);
		 
	 }
	 
	
	 /**
	  * Récupére les données d'un événement.
	  * 
	  * @return Les données.
	  */
	 public String getData() {
	  return data;
	 }
	
	 /**
	  * @param data the data to set
	  */
	 public void setData(String data) {
	  this.data = data;
	 }
	
	 /**
	  * @return the source
	  */
	 public String getSource() {
	  return source;
	 }
	
	 /**
	  * @param source the source to set
	  */
	 public void setSource(String source) {
	  this.source = source;
	 }


	public Date getBirthDate() {
		return birthDate;
	}


	public void setBirthDate(Date birthDate) {
		this.birthDate = birthDate;
	}


	public int getDuration() {
		return duration;
	}


	public void setDuration(int duration) {
		this.duration = duration;
	}

	public String getAuteur() {
		return auteur;
	}

	public void setAuteur(String auteur) {
		this.auteur = auteur;
	}
	
	
	
}
